import {
	getToken,
	removeToken
} from './auth';
import env from './env';


// 封装数据返回成功提示函数------------------------------------------------------
function successState(res) {
	// console.log(res);
	let code = res.data.status;
	// console.log('@return-data:')
	// console.log(res)
	//公共报错提醒
	if (code !== 200) {
		// 非成功状态码弹窗
		uni.showToast({

			icon: 'none',
			duration: 3000,
			title: `${res.data.data}`
		});
	}
	// 登陆失效
	if (res.data.status === 403) {
		// 清除本地token
		removeToken()
		// 关闭所有页面返回到登录页
		uni.reLaunch({
			url: '/pages/login/login'
		})
	}
	// console.log('/------http(END)------/')

	return res
}
// 封装数据返回失败提示函数------------------------------------------------------
function errorState(err) {
	// 请求失败弹窗
	uni.showToast({
		icon: 'none',
		duration: 3000,
		title: '服务器错误,请稍后再试'
	});
	// console.log('/------http(END)------/')
}


// 封装axios---------------------------------------------------------------------
function service(options = {}) {
	options.url = `${env.baseUrl}${options.url}`;
	// 判断本地是否存在token，如果存在则带上请求头
	if (getToken()) {
		options.header = {
			'content-type': 'application/json',
			'authorization': `${getToken()}` // 这里是token
		};
	}
	// 如果不存在则跳转到登录页，但是得将登录路径放到白名单中
	// console.log('/------http(START)------/')
	// console.log('@all-url:')
	// console.log(options.url)
	// console.log('@params:')
	// console.log(options)

	return new Promise((resolved, rejected) => {
		options.success = (res) => {
			// console.log(res, "成功了");
			successState(res)
			resolved(res.data)
		};
		options.fail = (err) => {
			errorState(err)
			rejected(res.data);
		};
		uni.request(options);
	});
}

export default service;